
https://juejin.cn/post/7309290887363477545

// 把所有仓库写到manifest.xml文件里，然后可以repo init -m a.xml 在执行repo sync -c 
// 就可以把所有仓库拉下来了，后续更新代码的话，这个命令也可以一键更新所有仓库

const getJson = () => 
new Promise(async (resolve) => {
  const total = 147 // 可以换成你们的仓库总数哦
  const perPage = 100 // 100条就100条！我计算一下还不行！
  const size = Math.ceil(total / perPage) // 诺，我算出来了，我就请求2次嘛，哼～
  let res = []
  for (let i = 1; i <= size; i++) {
    // 指定到子项目
    const url = `http://gitlab.devops.*.local/groups/academy/*/backend/-/children.json?page=${i}&per_page=${perPage}`
    const response = await fetch(url, {
      method: 'get',
      credentials: 'include' // 携带cookie
    })
    const data = await response.json()
    res.push(...data)
    if(i >= size){
      resolve(res)
    }
  }
})


const getRepos = async ()=>{
  const json = await getJson()
  console.log('仓库总数',json.length);
  const res = json.reduce((prev, curr) => {
    // 这个正则是匹配仓库名的，front是我们公司前端组的组名，你们换成你们自己公司的哈，接口上有的噢
    // const name = /\/bigdata\/cheetah\/([a-zA-Z-_0-9]*)/.exec(curr.relative_path)[1]
    prev += `"${curr.relative_path}"\n`
    return prev
  }, '')
  return res
}

console.log(await getRepos())



                            /academy/bigdata_innovation/backend/aldi_data_map
http://gitlab.devops.*.local/academy/bigdata_innovation/backend/aldi_data_map.git


#! /bin/bash

# 先来个友好的询问
read -p "是否在当前文件夹下克隆代码(yes/no):" flag

if [ "$flag" != "yes" ];then
	echo "请输入yes" exit
fi

echo "正在当前文件夹下克隆前端所有代码.....请稍后"

# 定义一个包含多个仓库URL的列表
# (把刚刚复制的数据粘贴将来即可)
repos=(
  "repo-name1"
  "repo-name2"
  ...
 )
 
# 遍历数组中的每个URL，并执行 git clone
for repo in "${repos[@]}"
do
  git clone "http://gitlab.devops.*.local${repo}.git"
done